Software as a service (SaaS) includes Web-based e-mail services (e.g., the MICROSOFT® HOTMAIL® e-mail service) where a vendor typically hosts all of the program logic and data and provides end users with access to this data over the public Internet through a Web-based user interface. Such a service relies on distributed applications and a large amount of data, which may be stored in more than one data center. Other examples of SaaS include line-of-business services, which are often large, customizable business solutions aimed at facilitating business processes such as finances, supply-chain management, and customer relations and consumer-oriented services. Regarding consumer-oriented services, these services are sometimes supported by advertising and offered to the general public at no cost.
Distributed applications can be data intensive and complex. For example, consider a financial services organization that actively monitors (i) financial markets, (ii) individual trader activity and (iii) customer accounts. An application running on a trader's desktop may track a moving average of the value of an investment portfolio. This moving average needs to be updated continuously as stock updates arrive and trades are confirmed, but does not require perfect accuracy. A second application running on the trading floor extracts events from live news feeds and correlates these events with market indicators to infer market sentiment, impacting automated stock trading programs. This query looks for patterns of events, correlated across time and data values, where each event has a short “shelf life”. In order to be actionable, the query must identify a trading opportunity as soon as possible with the information available at that time; late events may result in a retraction. Yet another application, a third application, running in a compliance office monitors trader activity and customer accounts, to watch for churn and ensure conformity with Security and Exchange Commission rules and institution guidelines. These queries may run until the end of a trading session, perhaps longer, and must process all events in proper order to make an accurate assessment. These three applications carry out similar computations but differ significantly in their workload and requirements for consistency guarantees and response time.
Various issues exist in the realm of distributed applications such as multi-tenant customization and extensibility, data scaling and isolation issues.